import { reqAddOrUpdataAttr } from '@/API/product/attr/index.js'
import { Attr } from '@/API/product/attr/type.js'
import { ElMessage } from 'element-plus'

export default (scene, getAttr, checkValueName, attrParams) => {
  const Cancel = () => {
    scene.value = 0
  }
  const addValue = () => {
    /* 添加对象,必须要有一个键对值 */
    attrParams.value.attrValueList.push({
      valueName: '',
      flag: true
    })
  }
  const save = async () => {
    // 收集参数.
    // 保存请求.
    if (!attrParams.value.attrName) {
      ElMessage({ type: 'error', message: '属性名称不能为空' })
      throw new Error('错误')
    }
    const result = await reqAddOrUpdataAttr(attrParams.value)
    if (result.code == 200) {
      scene.value = 0 /* 利用判断是否有id值. */
      ElMessage({ type: 'success', message: attrParams.value.id ? '修改成功' : '添加成功' })
      getAttr()
    } else {
      scene.value = 0 /* 利用判断是否有id值. */
      ElMessage({ type: 'success', message: attrParams.value.id ? '修改失败' : '添加失败' })
    }
  }
  /*
      在我们转换两种可写可读和可读状态的时候,我们进行条件判断,优化规则,如果我们的值为空,直接返回,不进行操作
      如果我们条件判断返回的是true说明,我们的检验出错了,直接返回函数,不执行操作.
      如果我们返回的是false,则进行切换.
      */
  const toLook = (row: Attr) => {
    if (checkValueName(row)) return
    row.flag = false
  }
  const toEdit = (row: Attr) => {
    if (checkValueName(row)) return
    row.flag = true
  }
  return { Cancel, addValue, save, checkValueName, toLook, toEdit }
}
